package mb.admin.webbean;

import java.util.ArrayList;

import javax.faces.model.SelectItem;

import mb.admin.dao.ParcelDAO;
import mb.admin.data.CustomersData;
import mb.admin.data.ParcelData;
import mb.commons.CalendarManager;

/**
 * Klasa Managera obsłującego widok paczek.
 * @author Michał Budziło
 *
 */
public class ParcelManager {

	private ParcelDAO dao;
	private ArrayList<ParcelData> dataList;
	private ParcelData editedData;
	private ParcelData newData;
	private CalendarManager calendar;
	private ArrayList<SelectItem> identNadawcyList;
	private CustomersData customer;

	/**
	 * Konstruktor 
	 */
	public ParcelManager() {
		dataList = new ArrayList<ParcelData>();
		dao = new ParcelDAO();
		dataList = dao.getParcelList();
		calendar=new CalendarManager();
		identNadawcyList = new ArrayList<SelectItem>();

	}
	
	/**
	 * Metoda wykonywana przy zmianie id nadawcy w oknie selekcji.
	 */
	public void changedIdNadawcy()
	{
		
		if(newData.getIdentNadawcy()!=null)
		customer=dao.getCustomerById(newData.getIdentNadawcy());
		
		if( customer!=null && customer.getImie()!=null && customer.getNazwisko()!=null && customer.getAdres()!=null && customer.getMiasto()!=null && customer.getKod()!=null)
		{
			newData.setImieNadawcy(customer.getImie());
			newData.setNazwiskoNadawcy(customer.getNazwisko());
			newData.setAdresNadawcy(customer.getAdres());
			newData.setMiastoNadawcy(customer.getMiasto());
			newData.setKodNadawcy(customer.getKod());
			
		}else
		{
			newData.setImieNadawcy(null);
			newData.setNazwiskoNadawcy(null);
			newData.setAdresNadawcy(null);
			newData.setMiastoNadawcy(null);
			newData.setKodNadawcy(null);
			
		}
		
	}

	/**
	 * Metoda przygotowuje dane przed dodaniem nowej paczki.
	 */
	public void prepareAddData() {
		newData= new ParcelData();
		identNadawcyList = dao.getIdNadawcyList();
		
		
	}

	/**
	 * Metoda dodaje do bazy nową paczkę.
	 */
	public void addData() {
		dao.insertData(newData);
		refreshData();
	}

	/**
	 * Metoda przygotowuje dane przed edycją paczki.
	 */
	public void prepareEditData() {

	}

	/**
	 * Metoda edytuje istniejącą paczkę w bazie danych.
	 */
	public void editData() {
		dao.updateData(editedData);
	}

	/**
	 * Metoda usuwa z bazy danych paczkę.
	 */
	public void deleteData() {
		dao.deleteData(editedData);
		refreshData();
	}

	/**
	 * Metoda pobiera z bazy danych listę paczek.
	 */
	public void refreshData() {
		dataList = dao.getParcelList();
	}

	/**
	 * @return the dataList
	 */
	public ArrayList<ParcelData> getDataList() {
		return dataList;
	}

	/**
	 * @param dataList the dataList to set
	 */
	public void setDataList(ArrayList<ParcelData> dataList) {
		this.dataList = dataList;
	}

	/**
	 * @return the editedData
	 */
	public ParcelData getEditedData() {
		return editedData;
	}

	/**
	 * @param editedData the editedData to set
	 */
	public void setEditedData(ParcelData editedData) {
		this.editedData = editedData;
	}

	/**
	 * @return the newData
	 */
	public ParcelData getNewData() {
		return newData;
	}

	/**
	 * @param newData the newData to set
	 */
	public void setNewData(ParcelData newData) {
		this.newData = newData;
	}


	/**
	 * @return the calendar
	 */
	public CalendarManager getCalendar() {
		return calendar;
	}

	/**
	 * @param calendar the calendar to set
	 */
	public void setCalendar(CalendarManager calendar) {
		this.calendar = calendar;
	}

	/**
	 * @return the customer
	 */
	public CustomersData getCustomer() {
		return customer;
	}

	/**
	 * @param customer the customer to set
	 */
	public void setCustomer(CustomersData customer) {
		this.customer = customer;
	}

	/**
	 * @return the identNadawcyList
	 */
	public ArrayList<SelectItem> getIdentNadawcyList() {
		return identNadawcyList;
	}

	/**
	 * @param identNadawcyList the identNadawcyList to set
	 */
	public void setIdentNadawcyList(ArrayList<SelectItem> identNadawcyList) {
		this.identNadawcyList = identNadawcyList;
	}


	
	
	
	

}
